// main.go
package main

import (
	EndPoint1 "ccc/EndPoint"
	"ccc/Server"
	"ccc/Transport"
	"ccc/utils"
	httpTransport "github.com/go-kit/kit/transport/http"
	mymux "github.com/gorilla/mux"
	"net/http"
)

// 服务发布

func main() {
	// 1.先创建我们最开始定义的Server/server.go
	s := Server.Server{}

	// 2.在用EndPoint/endpoint.go 创建业务服务
	hello := EndPoint1.MakeServerEndPointHello(s)
	//Bye := EndPoint1.MakeServerEndPointBye(s)

	// 3.使用 kit 创建 handler
	// 固定格式
	// 传入 业务服务 以及 定义的 加密解密方法
	helloServer := httpTransport.NewServer(hello, Transport.HelloDecodeRequest, Transport.HelloEncodeResponse)
	//sayServer := httpTransport.NewServer(Bye, Transport.ByeDecodeRequest, Transport.ByeEncodeResponse)

	// 使用http包启动服务
	//go http.ListenAndServe("0.0.0.0:8000", helloServer)
	////
	////go http.ListenAndServe("0.0.0.0:8001", sayServer)
	//select {}

	r := mymux.NewRouter()
	//r.Handle(`/user/{uid:\d+}`, serverHandler) //这种写法支持多种请求方式
	//r.Methods("GET", "DELETE").Path(`/name/{uid:\d+}`).Handler(sayServer)
	r.Methods("GET").Path(`/name/{uid}`).Handler(helloServer) //这种写法仅支持Get，限定只能Get请求
	r.Methods("GET").Path("/health").HandlerFunc(func(writer http.ResponseWriter, request *http.Request) {
		writer.Header().Set("Content-type", "application/json")
		writer.Write([]byte(`{"status":"ok"}`))
	})
	utils.RegService() //调用注册服务程序
	http.ListenAndServe(":8000", r)
}